Within the Internet in particular, and within large computer networks in general, there are typically a number of devices whose primary task is to route data packets through the network from a source to a destination (ie routers). Additionally, there are a large number of general processing devices which tend to store data for transmission over the network (eg web servers) and/or receive data from remote devices on the network for display to an end user (eg client terminals). The present inventors have realised that in such networks, there are often circumstances in which it would be desirable to have some processing performed on data (or some other function) within the network rather than just at the source and destination devices.
For example, where a web-server has a video file which an end user remote from the web-server would like to view, it may be convenient if the web-server transmits the entire file using a reliable transport protocol such as the Transport Control Protocol (TCP) to a point in the network which is relatively close to the client device at which the end user is located, and then for the network to forward on the file using a streaming protocol such as the RealTime Protocol (RTP).
One possibility for enabling such functionality within the network would be to provide the routers with enhanced functionality and to permit packets of data travelling through the routers to access this enhanced functionality by including appropriate codes in the headers of packets. However, there are a number of reasons why this is not generally deemed to be a feasible thing to do in practical networks, primarily because of the risk of the software causing the devices to malfunction in their primary task of ensuring correct routing of data packets through the network.
The present inventors have therefore proposed that as an alternative, a number of devices (eg web-servers) already connected to the network could be configured to provide data processing functionality “within the network” (ie somewhere other than either the source or destination device, as will be apparent later in the description) at a relatively high “Application Layer” level (as opposed to the lower “Network Layer” level with which routers are concerned). In particular, the inventors have proposed to deploy active elements as application level entities. The resulting system is referred to throughout the present application as an Application Level Active Network (ALAN). There are two key components of this approach. Active entities are referred to as “proxylets”. Example proxylets have been written by the present inventors using the object oriented programming language Java and are identified by a reference. These proxylets can be downloaded and executed on a suitably configured device. Such a device, once suitably configured, is referred to as an Execution Environment for Proxylets (EEP). For a full description of an example implementation of an EEP and several proxylets see A. Ghosh, M. Fry, G. MacLarty: “An Infrastructure for Application Level Active Networking.” Computer Networks, 36 (1) (2001) pp. 5-20.
In the above mentioned paper, it is described how the EEPs should organise themselves into an ordered tree-like structure, with each EEP, once integrated in to the EEP network, forming a node in the tree. Each EEP maintains a record of the EEPs which are directly above it in the tree hierarchy (going right the way up to a Master Root Node) together with all of the nodes which are immediately beneath it (ie its children nodes, but not its children's children nodes or further removed descendants).
In the implementation of EEPs described in the above mentioned paper, in order to set up a new EEP, the new EEP attempts to register itself with the Master Root Node EEP, the internet address of which is hard-coded into the program which is run to set-up the new EEP.
The present inventors have realised that such an implementation might encounter difficulties if it were used for implementing a large number of EEPs in a very large computer network such as the Internet. In particular, if the device on which the Master Root Node EEP 1 is running were to go out of service for an extended period of time, newly established EEPs would not be able to integrate themselves into the established network of EEPs. Furthermore, if the computer network to which the host devices are connected were to become partitioned such that one or more groups of EEPs could no longer communicate with the Master Root Node, the one or more groups severed from the Master Root Node would cease to be able to operate in a well-defined manner.